Desenvolver a Visão Geral da Arquitetura refletindo sobre os ambientes existentes de hardware e software, as decisões
iniciais relativas à arquitetura física e lógica, os requisitos não funcionais. Definir a arquitetura para o sistema
com base na experiência obtida com sistemas ou domínios de problema semelhantes, a fim de evitar esforço na
‘redescoberta arquitetural’.
Separar diferentes aspectos da arquitetura em visões separadas com o objetivo de gerenciar complexidade. Desenvolver as
visões de Casos de Uso, Lógica, de Processos, de Implantação, de Implementação e de Dados.
A Visão de Casos de Uso apresenta os casos de uso significativos do sistema, do ponto de vista da arquitetura. Ela
descreve o conjunto de cenários e/ou os casos de uso que representam alguma funcionalidade central e significativa.
Também descreve o conjunto de cenários e/ou casos de uso que possuem cobertura arquitetural substancial (que exercita
vários elementos de arquitetura) ou que enfatizam ou ilustram um determinado ponto complicado da arquitetura. Para cada
caso de uso significativo deve-se especificar o nome do caso de uso, uma breve descrição do caso de uso, descrições
significativas do Fluxo de Eventos do caso de uso, descrições significativas dos relacionamentos que envolvem o caso de
uso, como os relacionamentos de inclusão e de extensão ou as associações de comunicação, descrições significativas dos
Requisitos Especiais do caso de uso, imagens significativas da Interface do Usuário. As realizações desses casos de uso
devem estar localizadas na visão lógica.
A Visão Lógica apresenta elementos de projeto significativos do ponto de vista da arquitetura. Ela descreve as classes
mais importantes, sua organização em pacotes e subsistemas, e a organização desses pacotes e subsistemas em camadas.
Também descreve as realizações de casos de uso mais importantes como, por exemplo, os aspectos dinâmicos da
arquitetura. As classes e os objetos são os principais elementos nesta visão e podem ser elaborados os Diagramas de
Classe, Sequência e Colaboração para mostrarem o relacionamento entre esses elementos.
É importante identificar problemas de arquitetura comuns que podem ser expressos como mecanismos durante a análise
(mecanismos de persistência, gerenciamento de transações, gerenciamento de falhas, mensagens e inferência).
Analisar as funcionalidades a fim de capturar informações adicionais necessárias para entender o comportamento interno
pretendido do sistema que pode estar faltando nos requisitos.
A Visão de Processos descreve os processos do sistema e como eles se comunicam. Em cada processo, apenas os threads
superficiais e significativos do ponto de vista da arquitetura precisam ser apresentados. A visão de processos descreve
as tarefas (processos e threads) envolvidas na execução do sistema, suas interações e configurações, além da alocação
de objetos e classes para tarefas. Essa visão permite avaliar requisitos não funcionais relacionados à execução e
comunicação (desempenho, disponibilidade, escalabilidade). Para cada rede de processos deve-se especificar o nome da
rede de processos, os processos envolvidos, as interações entre os processos com as características de comunicação, a
vida útil e o comportamento de cada processo. Diagramas de Atividades e de Colaboração são úteis para representar essa
visão.
A Visão de Implantação descreve uma ou mais configurações (hardware) de rede física nas quais o software será
implantado e executado. Ela também descreve a alocação de tarefas (da Visão de Processos) para os nós físicos. Permite
avaliar requisitos não funcionais tais como desempenho, disponibilidade, confiança, escalabilidade. Nessa visão,
componentes executáveis são alocados a nós processadores e pode ser elaborado o Diagrama de Implantação. Para cada
configuração da rede física deve-se especificar o nome e o diagrama de implantação que ilustre a configuração, seguindo
o mapeamento de processos de cada processador.
A Visão de Implementação descreve a decomposição do software em camadas e subsistemas existentes no modelo de
implementação. Ela fornece uma visão geral do modelo de implementação e da sua organização em termos de componentes
existentes nos subsistemas e nas camadas de implementação, bem como a alocação de pacotes e de classes (da Visão
Lógica) para os componentes e os subsistemas de implementação da Visão de Implementação. É normalmente usada para
descrever os módulos do sistema. Os pacotes e bibliotecas de classes são exemplos de módulos em alguns ambientes de
programação. Podem ser elaborados os Diagramas de pacote e de componente nessa visão.
A Visão de Dados descreve os elementos persistentes e significativos do ponto de vista da arquitetura no modelo de
dados. Ela fornece uma visão geral do modelo de dados e de sua organização em termos de tabelas, visões, índices,
triggers e procedimentos armazenados usados para oferecer persistência ao sistema. Ela também descreve o mapeamento das
classes persistentes (da Visão Lógica) para a estrutura de dados do banco de dados. Deve-se apresentar elementos do
modelo de dados significativos do ponto de vista da arquitetura, descrevendo sua responsabilidade, e também alguns
poucos, mas muito importantes relacionamentos e comportamentos (triggers, procedimentos armazenados, etc.).
Definir estratégias de reuso para o projeto com base na visão geral da arquitetura, restrições e requisitos.
Identificar componentes reutilizáveis e decidir se desenvolve, adquire ou reusa.
Criar uma estrutura inicial para o Modelo de Projeto com as duas camadas de nível superior, ou seja, as camadas de
aplicativo e específicas do negócio.
Identificar abstrações-chave (representação de conceitos identificados durante as atividades de modelagem de negócios e
requisitos) para permitir a avaliação da necessidade de provas de conceito.
Realizar (projetar) os cenários significativos do ponto de vista da arquitetura.
Registrar todas as informações resultantes dessa análise no Documento de Arquitetura.
|